add missing libxl__free_all() calls
authorJuergen Gross <juergen.gross@ts.fujitsu.com>
Thu, 9 Dec 2010 13:50:56 +0000 (14:50 +0100)
committerJuergen Gross <juergen.gross@ts.fujitsu.com>
Thu, 9 Dec 2010 13:50:56 +0000 (14:50 +0100)
In various libxl functions libxl__free_all() was missing before return

Signed-off-by: juergen.gross@ts.fujitsu.com
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
committer: Stefano Stabellini <stefano.stabellini@eu.citrix.com>

tools/libxl/libxl.c
tools/libxl/libxl_dom.c
tools/libxl/libxl_pci.c

index 4139c46ffcfc8cf90c0177047a0436ddb476d733..eb085a26fd86f75a93c4d9291441312d82b3e629 100644 (file)
@@ -514,7 +514,10 @@ int libxl_domain_preserve(libxl_ctx *ctx, uint32_t domid,
 
     xs_write(ctx->xsh, t, libxl__sprintf(&gc, "%s/vm", dom_path), vm_path, strlen(vm_path));
     rc = libxl_domain_rename(ctx, domid, info->name, preserved_name, t);
-    if (rc) return rc;
+    if (rc) {
+        libxl__free_all(&gc);
+        return rc;
+    }
 
     xs_write(ctx->xsh, t, libxl__sprintf(&gc, "%s/uuid", vm_path), uuid_string, strlen(uuid_string));
 
@@ -756,17 +759,20 @@ int libxl_domain_shutdown(libxl_ctx *ctx, uint32_t domid, int req)
         ret = xc_get_hvm_param(ctx->xch, domid, HVM_PARAM_ACPI_S_STATE, &acpi_s_state);
         if (ret<0) {
             LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "getting ACPI S-state");
+            libxl__free_all(&gc);
             return ERROR_FAIL;
         }
         ret = xc_get_hvm_param(ctx->xch, domid, HVM_PARAM_CALLBACK_IRQ, &pvdriver);
         if (ret<0) {
             LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "getting HVM callback IRQ");
+            libxl__free_all(&gc);
             return ERROR_FAIL;
         }
         if (!pvdriver || acpi_s_state != 0) {
             ret = xc_domain_shutdown(ctx->xch, domid, req);
             if (ret<0) {
                 LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "unpausing domain");
+                libxl__free_all(&gc);
                 return ERROR_FAIL;
             }
        }
@@ -3677,13 +3683,16 @@ int libxl_create_cpupool(libxl_ctx *ctx, char *name, int schedid,
     char *uuid_string;
 
     uuid_string = libxl__uuid2string(&gc, *uuid);
-    if (!uuid_string)
+    if (!uuid_string) {
+        libxl__free_all(&gc);
         return ERROR_NOMEM;
+    }
 
     rc = xc_cpupool_create(ctx->xch, poolid, schedid);
     if (rc) {
         LIBXL__LOG_ERRNOVAL(ctx, LIBXL__LOG_ERROR, rc,
            "Could not create cpupool");
+        libxl__free_all(&gc);
         return ERROR_FAIL;
     }
 
@@ -3694,6 +3703,7 @@ int libxl_create_cpupool(libxl_ctx *ctx, char *name, int schedid,
                 LIBXL__LOG_ERRNOVAL(ctx, LIBXL__LOG_ERROR, rc,
                     "Error moving cpu to cpupool");
                 libxl_destroy_cpupool(ctx, *poolid);
+                libxl__free_all(&gc);
                 return ERROR_FAIL;
             }
         }
@@ -3709,8 +3719,10 @@ int libxl_create_cpupool(libxl_ctx *ctx, char *name, int schedid,
                         libxl__sprintf(&gc, "/local/pool/%d/name", *poolid),
                         "%s", name);
 
-        if (xs_transaction_end(ctx->xsh, t, 0) || (errno != EAGAIN))
+        if (xs_transaction_end(ctx->xsh, t, 0) || (errno != EAGAIN)) {
+            libxl__free_all(&gc);
             return 0;
+        }
     }
 }
 
@@ -3723,8 +3735,10 @@ int libxl_destroy_cpupool(libxl_ctx *ctx, uint32_t poolid)
     libxl_cpumap cpumap;
 
     info = xc_cpupool_getinfo(ctx->xch, poolid);
-    if (info == NULL)
+    if (info == NULL) {
+        libxl__free_all(&gc);
         return ERROR_NOMEM;
+    }
 
     rc = ERROR_INVAL;
     if ((info->cpupool_id != poolid) || (info->n_dom))
@@ -3768,6 +3782,7 @@ out1:
     libxl_cpumap_destroy(&cpumap);
 out:
     xc_cpupool_infofree(ctx->xch, info);
+    libxl__free_all(&gc);
 
     return rc;
 }
@@ -3809,6 +3824,7 @@ int libxl_cpupool_movedomain(libxl_ctx *ctx, uint32_t poolid, uint32_t domid)
 
     dom_path = libxl__xs_get_dompath(&gc, domid);
     if (!dom_path) {
+        libxl__free_all(&gc);
         return ERROR_FAIL;
     }
 
@@ -3816,6 +3832,7 @@ int libxl_cpupool_movedomain(libxl_ctx *ctx, uint32_t poolid, uint32_t domid)
     if (rc) {
         LIBXL__LOG_ERRNOVAL(ctx, LIBXL__LOG_ERROR, rc,
             "Error moving domain to cpupool");
+        libxl__free_all(&gc);
         return ERROR_FAIL;
     }
 
@@ -3834,5 +3851,6 @@ int libxl_cpupool_movedomain(libxl_ctx *ctx, uint32_t poolid, uint32_t domid)
             break;
     }
 
+    libxl__free_all(&gc);
     return 0;
 }
index 819a6bb63d599287b70f2a5cb9d02c6a0ae72bbd..31b057d6807370659a392022bdbd6a59f60243cd 100644 (file)
@@ -121,8 +121,10 @@ int libxl__build_post(libxl_ctx *ctx, uint32_t domid,
     }
 
     dom_path = libxl__xs_get_dompath(&gc, domid);
-    if (!dom_path)
+    if (!dom_path) {
+        libxl__free_all(&gc);
         return ERROR_FAIL;
+    }
 
     vm_path = xs_read(ctx->xsh, XBT_NULL, libxl__sprintf(&gc, "%s/vm", dom_path), NULL);
 retry_transaction:
@@ -469,6 +471,7 @@ int libxl__domain_save_device_model(libxl_ctx *ctx, uint32_t domid, int fd)
     if (stat(filename, &st) < 0)
     {
         LIBXL__LOG(ctx, LIBXL__LOG_ERROR, "Unable to stat qemu save file\n");
+        libxl__free_all(&gc);
         return ERROR_FAIL;
     }
 
@@ -477,13 +480,17 @@ int libxl__domain_save_device_model(libxl_ctx *ctx, uint32_t domid, int fd)
 
     c = libxl_write_exactly(ctx, fd, QEMU_SIGNATURE, strlen(QEMU_SIGNATURE),
                             "saved-state file", "qemu signature");
-    if (c)
+    if (c) {
+        libxl__free_all(&gc);
         return c;
+    }
 
     c = libxl_write_exactly(ctx, fd, &qemu_state_len, sizeof(qemu_state_len),
                             "saved-state file", "saved-state length");
-    if (c)
+    if (c) {
+        libxl__free_all(&gc);
         return c;
+    }
 
     fd2 = open(filename, O_RDONLY);
     while ((c = read(fd2, buf, sizeof(buf))) != 0) {
index a11faa6171c99bbf644c79661a6cd8d970b0e8c7..b5cc53d74eeab361db86c9bfb6bdc851d84aad55 100644 (file)
@@ -525,8 +525,10 @@ int libxl_device_pci_list_assignable(libxl_ctx *ctx, libxl_device_pci **list, in
     *list = NULL;
 
     rc = get_all_assigned_devices(&gc, &assigned, &num_assigned);
-    if ( rc )
+    if ( rc ) {
+        libxl__free_all(&gc);
         return rc;
+    }
 
     dir = opendir(SYSFS_PCIBACK_DRIVER);
     if ( NULL == dir ) {